SoilProperties Module

History

current version 1.3 - 3rd October 2016

version date comment
1.0 06/Dec/2013 Original code
1.1 25/Feb/2016 added parameters for van Genuchten WRC
1.2 16/Jun/2016 added parameters for Curve Number
1.3 16/Jun/2016 added function DepthToDiv

License

license: GNU GPL http://www.gnu.org/licenses/

Module Description

Define structure of soil column and soil retention curves

convention: first layer is close to ground surface



Derived Types

type, public ::  SoilColumn

Components

Type Visibility Attributes Name Initial
type(SoilLayer), public, ALLOCATABLE :: div(:)
integer, public :: divs

number of subdivisions in soil column

type(SoilType), public, ALLOCATABLE :: typ(:)
integer, public :: types

number of soil types

type, public ::  SoilLayer

Components

Type Visibility Attributes Name Initial
real(kind=double), public :: kact

actual hydraulic conductivity [m/s]

real(kind=double), public :: psi

actual matric potential [m]

integer(kind=short), public :: stype

soil type

real(kind=double), public :: theta

actual volumetric water content [m3/m3]

real(kind=double), public :: thickness

layer thickness [m]

type, public ::  SoilType

Components

Type Visibility Attributes Name Initial
real(kind=double), public :: c

Curve Number initial abstraction ratio

real(kind=double), public :: cn

Curve Number value

real(kind=double), public :: fc

field capacity [m3/m3]

real(kind=double), public :: ksat

saturated hydraulic conductivity [m/s]

real(kind=double), public :: kx

saturated K of soil "matrix" [m/s]

real(kind=double), public :: m
real(kind=double), public :: n
real(kind=double), public :: phy

suction head across the wetting front [m]

real(kind=double), public :: pp

tortuosity index, pre interaction parameter [-]

real(kind=double), public :: psdi

Brooks and Corey pore size distribution index [-]

real(kind=double), public :: psic

air entry value [m]

real(kind=double), public :: s0

Storativity, default = 254 [mm]

real(kind=double), public :: smax

maximum soil surface storage [m]

real(kind=double), public :: thetar

residual volumetric water content [m3/m3]

real(kind=double), public :: thetas

saturated volumetric water content [m3/m3]

real(kind=double), public :: wp

wilting point [m3/m3]


Functions

public function DepthToDiv(column, depth) result(d)

Return which division corresponds to given depth

Arguments

Type IntentOptional Attributes Name
type(SoilColumn), intent(in) :: column
real(kind=float), intent(in) :: depth

Return Value integer

public function Psi(psic, theta, thetas, thetar, psdi) result(h)

Compute matric potential (m)

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: psic

bubbling pressure (m)

real(kind=float), intent(in) :: theta

volumetric water content (m3/m3)

real(kind=float), intent(in) :: thetas

saturated volumetric water content (m3/m3)

real(kind=float), intent(in) :: thetar

residual volumetric water content (m3/m3)

real(kind=float), intent(in) :: psdi

Brooks & Corey pore size distribution index (-)

Return Value real(kind=float)

public function UnsHydCond(ksat, theta, thetas, thetar, psdi) result(k)

Compute hydraulic conductivity of partially saturated soil (m/s)

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: ksat

saturated hydraulic conductivity (m/s)

real(kind=float), intent(in) :: theta

volumetric water content (m3/m3)

real(kind=float), intent(in) :: thetas

saturated volumetric water content (m3/m3)

real(kind=float), intent(in) :: thetar

residual volumetric water content (m3/m3)

real(kind=float), intent(in) :: psdi

Brooks & Corey pore size distribution index (-)

Return Value real(kind=float)